While increasingly more successful in their roles as store and forward data systems, computer networks such as the Internet are experiencing tremendous growth as transaction-based, mission critical business applications, Web site owners, and business servers are overwhelmed by explosive traffic growth. Application servers and other processing nodes can be overwhelmed with the responsibility to perform a variety of functions, including establishing connections with remote servers or clients, encrypting and decrypting transmitted information, processing the received data or transaction information (e.g., purchase orders, requests for web pages, etc.), formatting information for display or processing etc. To account for the high volume of traffic and the increasingly complex number of tasks required of application servers, the traditional solution has been to buy more servers and more network bandwidth, which can be cost prohibitive. XML, or extensible Markup Language v. 1.0 was adopted by the World Wide Web Consortium (W3C) on Feb. 10, 1998. XML provides a structured syntax for data exchange. XML is a markup language, like Hyper-Text Markup Language (HTML). In XML, the actual data is separated from the presentation of the data, in contrast with HTML which combines these two items. Most markup languages, like HTML, are fixed markup languages. That is, the fixed markup languages (including HTML) include a set of fixed tags for crafting a document. On the other hand, XML does not define a fixed set of tags, but rather, only defines a syntax or structured format through which users can define their own set of tags. There presently are a number of XML based languages (e.g., WML, CXML, CBL) which define their own set of XML tags using the XML syntax.
The XML standard only requires that a received document be checked to confirm that it meets the basic syntax and format of XML (i.e., determine whether the document is “well formed”). In addition, the XML standard also allows a document to be validated, which is a more rigorous check to determine if the structure or grammar of the XML document complies with structure required by the particular XML based language. Although not required by the XML specification, many application servers or other processing nodes that process XML documents include a validating XML processor (or a validating XML parser) to check the XML application data for validity against a validation template. Validation is important because it can ensure that the application data (e.g., transaction information) in the XML document is provided in the correct format and should be correctly interpreted by the application server.
Current XML processing usually involves an XML application server receiving an XML document from a source application and then fully processing the document and optionally providing a response to the source application. An XML document is typically processed through three steps.
1) A check to determine if the document is “well formed”.
2) An optional validation check to guarantee the syntax and grammar match a particular validation template.
3) Traditional parsing of the content for meaning and application to the problem domain (e.g., processing the application data or transaction data).
The second step, validation, can be computationally very expensive from both a processor and elapsed time point of view. In order to validate a document, an XML application must either retrieve a validation template from somewhere on the network or must parse (or identify) the validation template out of the XML document itself (if the validation template is provided within the XML document). Once the application server has the validation template it then must parse the application data and check that it matches the validation template rules. As a result, the burden of performing document validation can significantly decrease the number of documents or transactions that can be processed by the application server or processing node.